home *** CD-ROM | disk | FTP | other *** search
/ Champak 132 (Alt) / Vol 132.iso / games / 3d_hyper / 3d_hyper.dcr / Scripts_75_Make Car Angular Dashpots.ls < prev    next >
Encoding:
Text File  |  2011-06-09  |  3.4 KB  |  104 lines

  1. property pModelA, pModelB, pAxis, pangle, pStrength, pDamping, pAngularDashpot, pName, pcamera, pMember, pSprite, pHavok, pCreated, spriteNum
  2. global gAngularDashpotNumber
  3.  
  4. on beginSprite me
  5.   pSprite = sprite(me.spriteNum)
  6.   pHavok = pSprite.pHavok
  7.   pMember = pSprite.member
  8.   pcamera = pSprite.camera
  9.   if voidp(pModelA) then
  10.     pModelA = pMember.model[1].name
  11.   end if
  12.   if voidp(pModelB) then
  13.     pModelB = pMember.model[2].name
  14.   end if
  15.   pAxis.normalize()
  16.   pCreated = 0
  17. end
  18.  
  19. on enterFrame me
  20.   global gRacers
  21.   if not pCreated then
  22.     if not ("__None__" = pModelB) then
  23.       pAngularDashpot = pHavok.makeAngularDashpot(pName, pModelA, pModelB)
  24.     else
  25.       repeat with i = 1 to gRacers.count
  26.         pAngularDashpot = pHavok.makeAngularDashpot("carModelDashpot_" & i, "carmodelplaceholder_" & i)
  27.         pAngularDashpot.strength = pStrength
  28.         pAngularDashpot.damping = pDamping
  29.         pAngularDashpot.rotation = [pAxis, pangle]
  30.       end repeat
  31.     end if
  32.     pCreated = 1
  33.   end if
  34. end
  35.  
  36. on endSprite me
  37. end
  38.  
  39. on isOKToAttach aScript, aSpriteType, aSpriteNum
  40.   case aSpriteType of
  41.     #graphic:
  42.       case sprite(aSpriteNum).member.type of
  43.         #shockwave3d:
  44.           if aScript.getmodels(sprite(aSpriteNum).member, []).count > 1 then
  45.             return 1
  46.           else
  47.             return 0
  48.           end if
  49.         #text:
  50.           if sprite(aSpriteNum).member.displayMode = #mode3d then
  51.             return 1
  52.           else
  53.             return 0
  54.           end if
  55.       end case
  56.     #script:
  57.       return 0
  58.   end case
  59.   return 0
  60. end
  61.  
  62. on getPropertyDescriptionList aScript
  63.   if the currentSpriteNum > 0 then
  64.     tGPDList = [:]
  65.     tList = []
  66.     tList = aScript.getmodels(sprite(the currentSpriteNum).member, tList)
  67.     if voidp(gAngularDashpotNumber) then
  68.       gAngularDashpotNumber = 0
  69.     end if
  70.     gAngularDashpotNumber = gAngularDashpotNumber + 1
  71.     pName = "AngularDashpot" & gAngularDashpotNumber / 2
  72.     tGPDList[#pName] = [#comment: "Name", #format: #string, #default: pName]
  73.     tGPDList[#pModelA] = [#comment: "Model A", #format: #string, #range: tList, #default: tList[1]]
  74.     tList.addAt(1, "__None__")
  75.     tGPDList[#pModelB] = [#comment: "Model B", #format: #string, #range: tList, #default: tList[1]]
  76.     tGPDList[#pAxis] = [#comment: "Rotation Axis", #format: #vector, #default: vector(0, 0, 1)]
  77.     tGPDList[#pangle] = [#comment: "Rotation Angle", #format: #float, #default: 0]
  78.     tGPDList[#pStrength] = [#comment: "Strength", #format: #float, #default: 1]
  79.     tGPDList[#pDamping] = [#comment: "Damping", #format: #float, #default: 0.10000000000000001]
  80.     return tGPDList
  81.   end if
  82. end
  83.  
  84. on getBehaviorTooltip aScript
  85.   tString1 = "Angular Dashpot" & RETURN & RETURN
  86.   tString2 = "-" && "Type" && ":" && "Local Action" & RETURN
  87.   tString3 = "-" && "Usage" && ":" && "Drop this onto a scene with physics"
  88.   return tString1 & tString2 & tString3
  89. end
  90.  
  91. on getBehaviorDescription aScript
  92.   tString1 = "ANGULAR DASHPOT" & RETURN & RETURN & "PARAMETERS:" & RETURN & "- Name" & RETURN & "- Model A" & RETURN & "- Model B" & RETURN & "- Axis" & RETURN & "- Angle" & RETURN & "- Strength" & RETURN & "- Damping" & RETURN & "PERMITTED SPRITE TYPES:" & RETURN & "- Shockwave 3D"
  93.   return tString1
  94. end
  95.  
  96. on getmodels me, amember, aList
  97.   repeat with j = 1 to amember.model.count
  98.     if string(amember.model[j]) contains "model" then
  99.       aList.add(amember.model[j].name)
  100.     end if
  101.   end repeat
  102.   return aList
  103. end
  104.